home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / Printing.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  16KB  |  545 lines

  1. /*
  2.      File:        Printing.h
  3.  
  4.      Contains:    Print Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __PRINTING__
  19. #define __PRINTING__
  20.  
  21. #ifndef __ERRORS__
  22. #include <Errors.h>
  23. #endif
  24. #ifndef __DIALOGS__
  25. #include <Dialogs.h>
  26. #endif
  27. #ifndef __QUICKDRAW__
  28. #include <Quickdraw.h>
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. #if PRAGMA_IMPORT_SUPPORTED
  36. #pragma import on
  37. #endif
  38.  
  39. #if PRAGMA_ALIGN_SUPPORTED
  40. #pragma options align=mac68k
  41. #endif
  42.  
  43. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  44.  
  45. enum {
  46.     iPFMaxPgs                    = 128,
  47.     iPrPgFract                    = 120,                            /*Page scale factor. ptPgSize (below) is in units of 1/iPrPgFract*/
  48.     iPrPgFst                    = 1,                            /*Page range constants*/
  49.     iPrPgMax                    = 9999,
  50.     iPrRelease                    = 3,                            /*Current version number of the code.*/
  51.     iPrSavPFil                    = -1,
  52.     iPrAbort                    = 0x0080,
  53.     iPrDevCtl                    = 7,                            /*The PrDevCtl Proc's ctl number*/
  54.     lPrReset                    = 0x00010000,                    /*The PrDevCtl Proc's CParam for reset*/
  55.     lPrLineFeed                    = 0x00030000,
  56.     lPrLFStd                    = 0x0003FFFF,                    /*The PrDevCtl Proc's CParam for std paper advance*/
  57.     lPrLFSixth                    = 0x0003FFFF,
  58.     lPrPageEnd                    = 0x00020000,                    /*The PrDevCtl Proc's CParam for end page*/
  59.     lPrDocOpen                    = 0x00010000,
  60.     lPrPageOpen                    = 0x00040000,
  61.     lPrPageClose                = 0x00020000,
  62.     lPrDocClose                    = 0x00050000,
  63.     iFMgrCtl                    = 8,                            /*The FMgr's Tail-hook Proc's ctl number*/
  64.     iMscCtl                        = 9,                            /*The FMgr's Tail-hook Proc's ctl number*/
  65.     iPvtCtl                        = 10                            /*The FMgr's Tail-hook Proc's ctl number*/
  66. };
  67.  
  68. #define sPrDrvr ".Print"
  69. /*    Error Codes moved to Errors.(hap) */
  70.  
  71. enum {
  72.     pPrGlobals                    = 0x00000944,                    /*The PrVars lo mem area:*/
  73.     bDraftLoop                    = 0,
  74.     bSpoolLoop                    = 1,
  75.     bUser1Loop                    = 2,
  76.     bUser2Loop                    = 3,
  77.     fNewRunBit                    = 2,
  78.     fHiResOK                    = 3,
  79.     fWeOpenedRF                    = 4,                            /*Driver constants */
  80.     iPrBitsCtl                    = 4,
  81.     lScreenBits                    = 0,
  82.     lPaintBits                    = 1,
  83.     lHiScreenBits                = 0x00000002,                    /*The Bitmap Print Proc's Screen Bitmap param*/
  84.     lHiPaintBits                = 0x00000003,                    /*The Bitmap Print Proc's Paint [sq pix] param*/
  85.     iPrIOCtl                    = 5,
  86.     iPrEvtCtl                    = 6,                            /*The PrEvent Proc's ctl number*/
  87.     lPrEvtAll                    = 0x0002FFFD,                    /*The PrEvent Proc's CParam for the entire screen*/
  88.     lPrEvtTop                    = 0x0001FFFD,                    /*The PrEvent Proc's CParam for the top folder*/
  89.     iPrDrvrRef                    = -3
  90. };
  91.  
  92.  
  93. enum {
  94.     getRslDataOp                = 4,
  95.     setRslOp                    = 5,
  96.     draftBitsOp                    = 6,
  97.     noDraftBitsOp                = 7,
  98.     getRotnOp                    = 8,
  99.     NoSuchRsl                    = 1,
  100.     OpNotImpl                    = 2,                            /*the driver doesn't support this opcode*/
  101.     RgType1                        = 1
  102. };
  103.  
  104.  
  105. enum {
  106.     feedCut                        = 0,
  107.     feedFanfold                    = 1,
  108.     feedMechCut                    = 2,
  109.     feedOther                    = 3
  110. };
  111.  
  112. typedef SInt8 TFeed;
  113.  
  114. enum {
  115.     scanTB                        = 0,
  116.     scanBT                        = 1,
  117.     scanLR                        = 2,
  118.     scanRL                        = 3
  119. };
  120.  
  121. typedef SInt8 TScan;
  122. /* A Rect Ptr */
  123. typedef Rect *TPRect;
  124. typedef pascal void (*PrIdleProcPtr)(void );
  125.  
  126. #if GENERATINGCFM
  127. typedef UniversalProcPtr PrIdleUPP;
  128. #else
  129. typedef PrIdleProcPtr PrIdleUPP;
  130. #endif
  131.  
  132. enum {
  133.     uppPrIdleProcInfo = kPascalStackBased
  134. };
  135.  
  136. #if GENERATINGCFM
  137. #define NewPrIdleProc(userRoutine)        \
  138.         (PrIdleUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppPrIdleProcInfo, GetCurrentArchitecture())
  139. #else
  140. #define NewPrIdleProc(userRoutine)        \
  141.         ((PrIdleUPP) (userRoutine))
  142. #endif
  143.  
  144. #if GENERATINGCFM
  145. #define CallPrIdleProc(userRoutine)        \
  146.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppPrIdleProcInfo)
  147. #else
  148. #define CallPrIdleProc(userRoutine)        \
  149.         (*(userRoutine))()
  150. #endif
  151. #if FOR_OPAQUE_SYSTEM_DATA_STRUCTURES
  152. typedef pascal void (*PItemProcPtr)(DialogRef theDialog, short item);
  153.  
  154. #if GENERATINGCFM
  155. typedef UniversalProcPtr PItemUPP;
  156. #else
  157. typedef PItemProcPtr PItemUPP;
  158. #endif
  159.  
  160. enum {
  161.     uppPItemProcInfo = kPascalStackBased
  162.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(DialogRef)))
  163.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  164. };
  165.  
  166. #if GENERATINGCFM
  167. #define NewPItemProc(userRoutine)        \
  168.         (PItemUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppPItemProcInfo, GetCurrentArchitecture())
  169. #else
  170. #define NewPItemProc(userRoutine)        \
  171.         ((PItemUPP) (userRoutine))
  172. #endif
  173.  
  174. #if GENERATINGCFM
  175. #define CallPItemProc(userRoutine, theDialog, item)        \
  176.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppPItemProcInfo, (theDialog), (item))
  177. #else
  178. #define CallPItemProc(userRoutine, theDialog, item)        \
  179.         (*(userRoutine))((theDialog), (item))
  180. #endif
  181. typedef struct OpaqueTPPrPort* TPPrPort;
  182. typedef TPPrPort TPPrPortRef;
  183. #else
  184. typedef pascal void (*PItemProcPtr)(DialogPtr theDialog, short item);
  185.  
  186. #if GENERATINGCFM
  187. typedef UniversalProcPtr PItemUPP;
  188. #else
  189. typedef PItemProcPtr PItemUPP;
  190. #endif
  191.  
  192. enum {
  193.     uppPItemProcInfo = kPascalStackBased
  194.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(DialogPtr)))
  195.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  196. };
  197.  
  198. #if GENERATINGCFM
  199. #define NewPItemProc(userRoutine)        \
  200.         (PItemUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppPItemProcInfo, GetCurrentArchitecture())
  201. #else
  202. #define NewPItemProc(userRoutine)        \
  203.         ((PItemUPP) (userRoutine))
  204. #endif
  205.  
  206. #if GENERATINGCFM
  207. #define CallPItemProc(userRoutine, theDialog, item)        \
  208.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppPItemProcInfo, (theDialog), (item))
  209. #else
  210. #define CallPItemProc(userRoutine, theDialog, item)        \
  211.         (*(userRoutine))((theDialog), (item))
  212. #endif
  213. struct TPrPort {
  214.     GrafPort                         gPort;                        /*The Printer's graf port.*/
  215.     QDProcs                         gProcs;                        /*..and its procs*/
  216.     long                             lGParam1;                    /*16 bytes for private parameter storage.*/
  217.     long                             lGParam2;
  218.     long                             lGParam3;
  219.     long                             lGParam4;
  220.     Boolean                         fOurPtr;                    /*Whether the PrPort allocation was done by us.*/
  221.     Boolean                         fOurBits;                    /*Whether the BitMap allocation was done by us.*/
  222. };
  223. typedef struct TPrPort TPrPort;
  224.  
  225. typedef TPrPort *TPPrPort;
  226. typedef TPrPort *TPPrPortRef;
  227. #endif
  228. /*
  229.  Printing Graf Port. All printer imaging, whether spooling, banding, etc, happens "thru" a GrafPort.
  230.   This is the "PrPeek" record. 
  231. */
  232. struct TPrInfo {
  233.     short                             iDev;                        /*Font mgr/QuickDraw device code*/
  234.     short                             iVRes;                        /*Resolution of device, in device coordinates*/
  235.     short                             iHRes;                        /*..note: V before H => compatable with Point.*/
  236.     Rect                             rPage;                        /*The page (printable) rectangle in device coordinates.*/
  237. };
  238. typedef struct TPrInfo TPrInfo;
  239.  
  240. typedef TPrInfo *TPPrInfo;
  241. /* Print Info Record: The parameters needed for page composition. */
  242. struct TPrStl {
  243.     short                             wDev;
  244.     short                             iPageV;
  245.     short                             iPageH;
  246.     SInt8                             bPort;
  247.     TFeed                             feed;
  248. };
  249. typedef struct TPrStl TPrStl;
  250.  
  251. typedef TPrStl *TPPrStl;
  252. struct TPrXInfo {
  253.     short                             iRowBytes;
  254.     short                             iBandV;
  255.     short                             iBandH;
  256.     short                             iDevBytes;
  257.     short                             iBands;
  258.     SInt8                             bPatScale;
  259.     SInt8                             bUlThick;
  260.     SInt8                             bUlOffset;
  261.     SInt8                             bUlShadow;
  262.     TScan                             scan;
  263.     SInt8                             bXInfoX;
  264. };
  265. typedef struct TPrXInfo TPrXInfo;
  266.  
  267. typedef TPrXInfo *TPPrXInfo;
  268. struct TPrJob {
  269.     short                             iFstPage;                    /*Page Range.*/
  270.     short                             iLstPage;
  271.     short                             iCopies;                    /*No. copies.*/
  272.     SInt8                             bJDocLoop;                    /*The Doc style: Draft, Spool, .., and ..*/
  273.     Boolean                         fFromUsr;                    /*Printing from an User's App (not PrApp) flag*/
  274.     PrIdleUPP                         pIdleProc;                    /*The Proc called while waiting on IO etc.*/
  275.     StringPtr                         pFileName;                    /*Spool File Name: NIL for default.*/
  276.     short                             iFileVol;                    /*Spool File vol, set to 0 initially*/
  277.     SInt8                             bFileVers;                    /*Spool File version, set to 0 initially*/
  278.     SInt8                             bJobX;                        /*An eXtra byte.*/
  279. };
  280. typedef struct TPrJob TPrJob;
  281.  
  282. typedef TPrJob *TPPrJob;
  283. /* Print Job: Print "form" for a single print request. */
  284. struct TPrint {
  285.     short                             iPrVersion;                    /*(2) Printing software version*/
  286.     TPrInfo                         prInfo;                        /*(14) the PrInfo data associated with the current style.*/
  287.     Rect                             rPaper;                        /*(8) The paper rectangle [offset from rPage]*/
  288.     TPrStl                             prStl;                        /*(8)  This print request's style.*/
  289.     TPrInfo                         prInfoPT;                    /*(14)  Print Time Imaging metrics*/
  290.     TPrXInfo                         prXInfo;                    /*(16)  Print-time (expanded) Print info record.*/
  291.     TPrJob                             prJob;                        /*(20) The Print Job request (82)  Total of the above; 120-82 = 38 bytes needed to fill 120*/
  292.     short                             printX[19];                    /*Spare to fill to 120 bytes!*/
  293. };
  294. typedef struct TPrint TPrint;
  295.  
  296. typedef TPrint *TPPrint;
  297. typedef TPPrint *THPrint;
  298. #if FOR_OPAQUE_SYSTEM_DATA_STRUCTURES
  299. /*
  300.  typedef struct OpaqueTPrStatusRef *TPPrStatus;
  301.  typedef struct OpaqueTPrStatusRef *TPPrStatusRef;
  302. */
  303. typedef struct OpaqueTPPrStatus* TPPrStatus;
  304. typedef TPPrStatus TPPrStatusRef;
  305. #else
  306. struct TPrStatus {
  307.     short                             iTotPages;                    /*Total pages in Print File.*/
  308.     short                             iCurPage;                    /*Current page number*/
  309.     short                             iTotCopies;                    /*Total copies requested*/
  310.     short                             iCurCopy;                    /*Current copy number*/
  311.     short                             iTotBands;                    /*Total bands per page.*/
  312.     short                             iCurBand;                    /*Current band number*/
  313.     Boolean                         fPgDirty;                    /*True if current page has been written to.*/
  314.     Boolean                         fImaging;                    /*Set while in band's DrawPic call.*/
  315.     THPrint                         hPrint;                        /*Handle to the active Printer record*/
  316.     TPPrPortRef                     pPrPort;                    /*Ptr to the active PrPort*/
  317.     PicHandle                         hPic;                        /*Handle to the active Picture*/
  318. };
  319. typedef struct TPrStatus TPrStatus;
  320.  
  321. typedef TPrStatus *TPPrStatus;
  322. typedef TPrStatus *TPPrStatusRef;
  323. #endif
  324. /* Print Status: Print information during printing. */
  325. struct TPfPgDir {
  326.     short                             iPages;
  327.     long                             iPgPos[129];                /*ARRAY [0..iPfMaxPgs] OF LONGINT*/
  328. };
  329. typedef struct TPfPgDir TPfPgDir;
  330.  
  331. typedef TPfPgDir *TPPfPgDir;
  332. typedef TPPfPgDir *THPfPgDir;
  333. /* PicFile = a TPfHeader followed by n QuickDraw Pics (whose PicSize is invalid!) */
  334. /*
  335.  This is the Printing Dialog Record. Only used by folks appending their own
  336.    DITLs to the print dialogs.    Print Dialog: The Dialog Stream object. 
  337. */
  338. #if FOR_OPAQUE_SYSTEM_DATA_STRUCTURES
  339. /*
  340.  typedef struct OpaqueTPrDlgRef *TPPrDlg;
  341.  typedef struct OpaqueTPrDlgRef *TPPrDlgRef;
  342. */
  343. typedef struct OpaqueTPPrDlg* TPPrDlg;
  344. typedef TPPrDlg TPPrDlgRef;
  345. #else
  346. struct TPrDlg {
  347.     DialogRecord                     Dlg;                        /*The Dialog window*/
  348.     ModalFilterUPP                     pFltrProc;                    /*The Filter Proc.*/
  349.     PItemUPP                         pItemProc;                    /*The Item evaluating proc.*/
  350.     THPrint                         hPrintUsr;                    /*The user's print record.*/
  351.     Boolean                         fDoIt;
  352.     Boolean                         fDone;
  353.     long                             lUser1;                        /*Four longs for apps to hang global data.*/
  354.     long                             lUser2;                        /*Plus more stuff needed by the particular*/
  355.     long                             lUser3;                        /*printing dialog.*/
  356.     long                             lUser4;
  357. };
  358. typedef struct TPrDlg TPrDlg;
  359.  
  360. typedef TPrDlg *TPPrDlg;
  361. typedef TPrDlg *TPPrDlgRef;
  362. #endif
  363. typedef pascal TPPrDlgRef (*PDlgInitProcPtr)(THPrint hPrint);
  364.  
  365. #if GENERATINGCFM
  366. typedef UniversalProcPtr PDlgInitUPP;
  367. #else
  368. typedef PDlgInitProcPtr PDlgInitUPP;
  369. #endif
  370.  
  371. enum {
  372.     uppPDlgInitProcInfo = kPascalStackBased
  373.          | RESULT_SIZE(SIZE_CODE(sizeof(TPPrDlgRef)))
  374.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(THPrint)))
  375. };
  376.  
  377. #if GENERATINGCFM
  378. #define NewPDlgInitProc(userRoutine)        \
  379.         (PDlgInitUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppPDlgInitProcInfo, GetCurrentArchitecture())
  380. #else
  381. #define NewPDlgInitProc(userRoutine)        \
  382.         ((PDlgInitUPP) (userRoutine))
  383. #endif
  384.  
  385. #if GENERATINGCFM
  386. #define CallPDlgInitProc(userRoutine, hPrint)        \
  387.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppPDlgInitProcInfo, (hPrint))
  388. #else
  389. #define CallPDlgInitProc(userRoutine, hPrint)        \
  390.         (*(userRoutine))((hPrint))
  391. #endif
  392. struct TGnlData {
  393.     short                             iOpCode;
  394.     short                             iError;
  395.     long                             lReserved;                    /*more fields here depending on call*/
  396. };
  397. typedef struct TGnlData TGnlData;
  398.  
  399. struct TRslRg {
  400.     short                             iMin;
  401.     short                             iMax;
  402. };
  403. typedef struct TRslRg TRslRg;
  404.  
  405. struct TRslRec {
  406.     short                             iXRsl;
  407.     short                             iYRsl;
  408. };
  409. typedef struct TRslRec TRslRec;
  410.  
  411. struct TGetRslBlk {
  412.     short                             iOpCode;
  413.     short                             iError;
  414.     long                             lReserved;
  415.     short                             iRgType;
  416.     TRslRg                             xRslRg;
  417.     TRslRg                             yRslRg;
  418.     short                             iRslRecCnt;
  419.     TRslRec                         rgRslRec[27];
  420. };
  421. typedef struct TGetRslBlk TGetRslBlk;
  422.  
  423. struct TSetRslBlk {
  424.     short                             iOpCode;
  425.     short                             iError;
  426.     long                             lReserved;
  427.     THPrint                         hPrint;
  428.     short                             iXRsl;
  429.     short                             iYRsl;
  430. };
  431. typedef struct TSetRslBlk TSetRslBlk;
  432.  
  433. struct TDftBitsBlk {
  434.     short                             iOpCode;
  435.     short                             iError;
  436.     long                             lReserved;
  437.     THPrint                         hPrint;
  438. };
  439. typedef struct TDftBitsBlk TDftBitsBlk;
  440.  
  441. struct TGetRotnBlk {
  442.     short                             iOpCode;
  443.     short                             iError;
  444.     long                             lReserved;
  445.     THPrint                         hPrint;
  446.     Boolean                         fLandscape;
  447.     SInt8                             bXtra;
  448. };
  449. typedef struct TGetRotnBlk TGetRotnBlk;
  450.  
  451. extern pascal void PrPurge(void )
  452.  FOURWORDINLINE(0x2F3C, 0xA800, 0x0000, 0xA8FD);
  453.  
  454. extern pascal void PrNoPurge(void )
  455.  FOURWORDINLINE(0x2F3C, 0xB000, 0x0000, 0xA8FD);
  456.  
  457. extern pascal void PrOpen(void )
  458.  FOURWORDINLINE(0x2F3C, 0xC800, 0x0000, 0xA8FD);
  459.  
  460. extern pascal void PrClose(void )
  461.  FOURWORDINLINE(0x2F3C, 0xD000, 0x0000, 0xA8FD);
  462.  
  463. extern pascal void PrintDefault(THPrint hPrint)
  464.  FOURWORDINLINE(0x2F3C, 0x2004, 0x0480, 0xA8FD);
  465.  
  466. extern pascal Boolean PrValidate(THPrint hPrint)
  467.  FOURWORDINLINE(0x2F3C, 0x5204, 0x0498, 0xA8FD);
  468.  
  469. extern pascal Boolean PrStlDialog(THPrint hPrint)
  470.  FOURWORDINLINE(0x2F3C, 0x2A04, 0x0484, 0xA8FD);
  471.  
  472. extern pascal Boolean PrJobDialog(THPrint hPrint)
  473.  FOURWORDINLINE(0x2F3C, 0x3204, 0x0488, 0xA8FD);
  474.  
  475. extern pascal TPPrDlgRef PrStlInit(THPrint hPrint)
  476.  FOURWORDINLINE(0x2F3C, 0x3C04, 0x040C, 0xA8FD);
  477.  
  478. extern pascal TPPrDlgRef PrJobInit(THPrint hPrint)
  479.  FOURWORDINLINE(0x2F3C, 0x4404, 0x0410, 0xA8FD);
  480.  
  481. extern pascal void PrJobMerge(THPrint hPrintSrc, THPrint hPrintDst)
  482.  FOURWORDINLINE(0x2F3C, 0x5804, 0x089C, 0xA8FD);
  483.  
  484. extern pascal Boolean PrDlgMain(THPrint hPrint, PDlgInitUPP pDlgInit)
  485.  FOURWORDINLINE(0x2F3C, 0x4A04, 0x0894, 0xA8FD);
  486.  
  487. extern pascal TPPrPortRef PrOpenDoc(THPrint hPrint, TPPrPortRef pPrPort, Ptr pIOBuf)
  488.  FOURWORDINLINE(0x2F3C, 0x0400, 0x0C00, 0xA8FD);
  489.  
  490. extern pascal void PrCloseDoc(TPPrPortRef pPrPort)
  491.  FOURWORDINLINE(0x2F3C, 0x0800, 0x0484, 0xA8FD);
  492.  
  493. extern pascal void PrOpenPage(TPPrPortRef pPrPort, TPRect pPageFrame)
  494.  FOURWORDINLINE(0x2F3C, 0x1000, 0x0808, 0xA8FD);
  495.  
  496. extern pascal void PrClosePage(TPPrPortRef pPrPort)
  497.  FOURWORDINLINE(0x2F3C, 0x1800, 0x040C, 0xA8FD);
  498.  
  499. extern pascal void PrPicFile(THPrint hPrint, TPPrPortRef pPrPort, Ptr pIOBuf, Ptr pDevBuf, TPPrStatusRef prStatus)
  500.  FOURWORDINLINE(0x2F3C, 0x6005, 0x1480, 0xA8FD);
  501.  
  502. extern pascal short PrError(void )
  503.  FOURWORDINLINE(0x2F3C, 0xBA00, 0x0000, 0xA8FD);
  504.  
  505. extern pascal void PrSetError(short iErr)
  506.  FOURWORDINLINE(0x2F3C, 0xC000, 0x0200, 0xA8FD);
  507.  
  508. extern pascal void PrGeneral(Ptr pData)
  509.  FOURWORDINLINE(0x2F3C, 0x7007, 0x0480, 0xA8FD);
  510.  
  511. extern pascal void PrDrvrOpen(void )
  512.  FOURWORDINLINE(0x2F3C, 0x8000, 0x0000, 0xA8FD);
  513.  
  514. extern pascal void PrDrvrClose(void )
  515.  FOURWORDINLINE(0x2F3C, 0x8800, 0x0000, 0xA8FD);
  516.  
  517. extern pascal void PrCtlCall(short iWhichCtl, long lParam1, long lParam2, long lParam3)
  518.  FOURWORDINLINE(0x2F3C, 0xA000, 0x0E00, 0xA8FD);
  519.  
  520. extern pascal Handle PrDrvrDCE(void )
  521.  FOURWORDINLINE(0x2F3C, 0x9400, 0x0000, 0xA8FD);
  522.  
  523. extern pascal short PrDrvrVers(void )
  524.  FOURWORDINLINE(0x2F3C, 0x9A00, 0x0000, 0xA8FD);
  525.  
  526. extern pascal short PrLoadDriver(void )
  527.  FOURWORDINLINE(0x2F3C, 0xD800, 0x0000, 0xA8FD);
  528.  
  529. #endif
  530.  
  531. #if PRAGMA_ALIGN_SUPPORTED
  532. #pragma options align=reset
  533. #endif
  534.  
  535. #if PRAGMA_IMPORT_SUPPORTED
  536. #pragma import off
  537. #endif
  538.  
  539. #ifdef __cplusplus
  540. }
  541. #endif
  542.  
  543. #endif /* __PRINTING__ */
  544.  
  545.